package br.com.exemploNegocio.dao.impl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.exemploNegocio.dao.AssociacaoDAO;
import br.com.exemploNegocio.dao.EntidadeDAO;
import br.com.exemploNegocio.entidade.Associacao;
import br.com.exemploNegocio.entidade.Entidade;

@Stateless
public class AssociacaoDAOImpl implements AssociacaoDAO {

	@EJB
	private EntidadeDAO entidadeDAO;
	
	@PersistenceContext
	private EntityManager entityManager;

	public void inserirAssociacao(Associacao associacao) {
		entityManager.persist(associacao);
	}

	public void alterarAssociacao(Associacao entidade) {
		entityManager.merge(entidade);
	}

	public void excluirAssociacao(Associacao entidade) {
		entityManager.remove(entityManager.getReference(Associacao.class, entidade.getId()));
	}

	public List<Associacao> getAssociacoesByIdEntidade(Long userId) {
		Entidade entidade = entidadeDAO.getEntidadeById(userId);
		List<Associacao> lista = entidade.getAssociacoes();
		for(Associacao assoc: lista){
			assoc.getEntidade();
		}
		return lista;
	}

	public EntidadeDAO getEntidadeDAO() {
		return entidadeDAO;
	}

	public void setEntidadeDAO(EntidadeDAO entidadeDAO) {
		this.entidadeDAO = entidadeDAO;
	}

	@SuppressWarnings("unchecked")
	public List<Associacao> getAssociacoes() {
		Query query = entityManager.createNamedQuery("findAssociacoes",
				Associacao.class);
		
		List<Associacao> lista = query.getResultList();
		for(Associacao assoc: lista){
			assoc.getEntidade();
		}
		return lista;
	}
}
